/**
 * @author : xwj
 * @date : 2021/7/20 16:38
 * @description : 给你 n 个非负整数 a1，a2，...，an，每个数代表坐标中的一个点 (i, ai) 。
 * 在坐标内画 n 条垂直线，垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。
 * 找出其中的两条线，使得它们与 x 轴共同构成的容器可以容纳最多的水。
 * @class : test11
 **/

/**
 * 思路:
 *      这道题是求最大容积（底 X 高）, 两条高之间的底是一定的，从最大的底开始求面积，两条高之间短的一条才是有效的
 *      所以，短的一端往里缩。
 * **/

public class test11 {

    public static int maxArea(int[] height) {
        int max = 0;
        int i = 0,j = height.length-1;
        while (i < j){
            max = max > (height[i]>height[j]?height[j]:height[i])*(j-i) ? max:(height[i]>height[j]?height[j]:height[i])*(j-i);
            if (height[i] < height[j]){
                i++;
            }else {
                j--;
            }
        }
        return max;
    }

    public static void main(String[] args) {
        int[] h = new int[]{1,2,3,4,5,6,45};
        System.out.println("最大容积:"+maxArea(h));
    }

}
